﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using QuanLyDiem.models;
using QuanLyDiem.DanhMuc;
using QuanLyDiem.Controllers;
using Library.UI.Grid;
using Library.UI.Form;
namespace QuanLyDiem.DanhMuc
{
    public partial class frmChuongTrinhDaoTaoChiTiet : DevExpress.XtraEditors.XtraForm
    {
        public frmChuongTrinhDaoTaoChiTiet()
        {
            InitializeComponent();
        }
        public int abc { get; set; }
        private void XtraForm1_Load(object sender, EventArgs e)
        {
            Context db = new Context();
            C_He.LoadDataSource(lueHe);
           // C_ChuyenNganh.LoadDataSource(lueChuyenNganh);
            C_Khoa.LoadDataSource(lueKhoa);
            C_KhoaHoc.LoadDataSource(lueKhoaHoc);
          //  C_KyThu.LoadDataSource(lueKyThu);
            C_Mon.LoadDataSource(lueMonHoc, db);
            C_Mon.LoadDataSource(rleMon, db);
            gridView2.Config(true, false, false, false, false, false, true, false, false);
            gridView2.Config2(DevExpress.XtraGrid.Views.Grid.GridMultiSelectMode.RowSelect, false, true);
            btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = btnthuchien.Enabled = btnhuy.Enabled = false;

        }

        private void lueHe_EditValueChanged(object sender, EventArgs e)
        {
            if (lueKhoa.EditValue != null)
            {
                Context db = new Context();
                var ID_chuyennganhs = db.ChuongTrinhDaoTaos.Where(p => p.ID_he == (int)lueHe.EditValue && p.ID_khoa == (int)lueKhoa.EditValue).Select(o => o.ID_chuyen_nganh).Distinct().ToList();
                var chuyennganhs = new List<ChuyenNganh>();
                foreach (var row in ID_chuyennganhs)
                {
                    var chuyennganh = db.ChuyenNganhs.Where(p => p.ID_chuyen_nganh == row).First();
                    int a = 0;
                    if (int.TryParse(chuyennganh.Ma_chuyen_nganh, out a) && lueHe.Text == "Trung cấp chuyên nghiệp")
                    {
                        chuyennganhs.Add(chuyennganh);
                    }
                    else if (!int.TryParse(chuyennganh.Ma_chuyen_nganh, out a) && lueHe.Text == "Cao đẳng chính quy")
                    {
                        chuyennganhs.Add(chuyennganh);
                    }
                }
                lueChuyenNganh.Properties.Columns.Clear();

                lueChuyenNganh.Properties.DataSource = chuyennganhs.ToList();

                lueChuyenNganh.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Chuyen_nganh", "Chuyên ngành"));
                lueChuyenNganh.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFit;

                lueChuyenNganh.Properties.DisplayMember = "Chuyen_nganh";
                lueChuyenNganh.Properties.ValueMember = "ID_chuyen_nganh";
                lueChuyenNganh.Properties.NullText = "";
                lueChuyenNganh.ToolTip = lueChuyenNganh.Properties.NullValuePrompt = "Chọn chuyên ngành";

                lueChuyenNganh.Properties.NullValuePromptShowForEmptyValue = true;
                lueChuyenNganh.Properties.AllowDropDownWhenReadOnly = DevExpress.Utils.DefaultBoolean.True;
                lueChuyenNganh.ItemIndex = 0;
                
            }
        }

        private void lueKhoa_EditValueChanged(object sender, EventArgs e)
        {
            if (lueHe.EditValue != null)
            {
                Context db = new Context();
                var ID_chuyennganhs = db.ChuongTrinhDaoTaos.Where(p => p.ID_he == (int)lueHe.EditValue && p.ID_khoa == (int)lueKhoa.EditValue).Select(o => o.ID_chuyen_nganh).Distinct().ToList();
                var chuyennganhs = new List<ChuyenNganh>();
                foreach (var row in ID_chuyennganhs)
                {
                    var chuyennganh = db.ChuyenNganhs.Where(p => p.ID_chuyen_nganh == row).First();
                    int a = 0;
                    if (int.TryParse(chuyennganh.Ma_chuyen_nganh, out a) && lueHe.Text == "Trung cấp chuyên nghiệp")
                    {
                        chuyennganhs.Add(chuyennganh);
                    }
                    else if (!int.TryParse(chuyennganh.Ma_chuyen_nganh, out a) && lueHe.Text == "Cao đẳng chính quy")
                    {
                        chuyennganhs.Add(chuyennganh);
                    }
                }
                lueChuyenNganh.Properties.Columns.Clear();

                lueChuyenNganh.Properties.DataSource = chuyennganhs.ToList();

                lueChuyenNganh.Properties.Columns.Add(new DevExpress.XtraEditors.Controls.LookUpColumnInfo("Chuyen_nganh", "Chuyên ngành"));
                lueChuyenNganh.Properties.BestFitMode = DevExpress.XtraEditors.Controls.BestFitMode.BestFit;

                lueChuyenNganh.Properties.DisplayMember = "Chuyen_nganh";
                lueChuyenNganh.Properties.ValueMember = "ID_chuyen_nganh";
                lueChuyenNganh.Properties.NullText = "";
                lueChuyenNganh.ToolTip = lueChuyenNganh.Properties.NullValuePrompt = "Chọn chuyên ngành";

                lueChuyenNganh.Properties.NullValuePromptShowForEmptyValue = true;
                lueChuyenNganh.Properties.AllowDropDownWhenReadOnly = DevExpress.Utils.DefaultBoolean.True;
                lueChuyenNganh.ItemIndex = 0;
            }
        }

        private void lueChuyenNganh_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void lueKyThu_EditValueChanged(object sender, EventArgs e)
        {

        }

        private void lueKhoaHoc_EditValueChanged(object sender, EventArgs e)
        {
          
        }
        public void btnHienThi_Click(object sender, EventArgs e)
        {
            Context db = new Context();
            try
            {
                var id_dts = db.ChuongTrinhDaoTaos.Where(a => a.ID_he == (int)lueHe.EditValue && a.ID_khoa == (int)lueKhoa.EditValue && a.ID_chuyen_nganh == (int)lueChuyenNganh.EditValue && a.Khoa_hoc == int.Parse(lueKhoaHoc.Text)).Select(a => a.ID_dt).FirstOrDefault();
                if (id_dts == 0)
                {
                    btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = btnthuchien.Enabled = btnhuy.Enabled = false;
                    MessageBox.Show("Không có khung chương trình đào tạo");
                }
                else
                {
                    id_dts1 = id_dts;
                    var daotao = db.ChuongTrinhDaoTaoChiTiets.Where(a => a.ID_dt == id_dts).ToList();
                    gridControl2.DataSource = daotao.ToList();
                    btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = btnthuchien.Enabled = btnhuy.Enabled = true;
                }
                
            }
            catch (Exception)
            {
                MessageBox.Show("Không có khung chương trình đào tạo");
            }
            

        }
        private void gridView2_FocusedRowChanged(object sender, DevExpress.XtraGrid.Views.Base.FocusedRowChangedEventArgs e)
        {
            var Monhocs = gridView2.GetFocusedRow() as ChuongTrinhDaoTaoChiTiet;
            if (Monhocs == null) return;
            Context db =new Context();
           
            lueMonHoc.EditValue = Monhocs.ID_mon;
            txtSoHocTrinh.Text = Monhocs.So_hoc_trinh.ToString();
            txtThucHanh.Text = Monhocs.Thuc_hanh.ToString();
            txtLyThuyet.Text = Monhocs.Ly_thuyet.ToString();
            txtHeSo.Text = Monhocs.He_so.ToString();
            txtKyHoc.Text = Monhocs.Ky_thu.ToString();
        }
       


        public int id_dts1 { get; set; }

        private void btnthem_Click_1(object sender, EventArgs e)
        {
            btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = false;
            lueMonHoc.Enabled = txtHeSo.Enabled = txtKyHoc.Enabled = txtLyThuyet.Enabled = txtSoHocTrinh.Enabled = txtThucHanh.Enabled = true;
            txtHeSo.Text = txtKyHoc.Text = txtLyThuyet.Text = txtSoHocTrinh.Text = txtThucHanh.Text = "";
          //  txtSoHocTrinh.Focus();
            abc = 1;
            btnthuchien.Enabled = btnhuy.Enabled = true;
        }

        private void btnthuchien_Click_1(object sender, EventArgs e)
        {
            Context db = new Context();
            if (txtHeSo.Text == "" && txtKyHoc.Text == "" && txtLyThuyet.Text == "" && txtSoHocTrinh.Text == "" && txtThucHanh.Text == "" || txtHeSo.Text == "" || txtKyHoc.Text == "" || txtLyThuyet.Text == "" || txtSoHocTrinh.Text == "" || txtThucHanh.Text == "")
            {
                MessageBox.Show("Bạn phải nhập đủ dữ liệu");
            }
            else
            {
                if (abc == 1)
                {
                    var rs = MessageBox.Show("Bạn có muốn thêm dữ liệu không", "Chú ý", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
                    if (rs == System.Windows.Forms.DialogResult.Yes)
                    {
                        try
                        {

                            if (id_dts1 != 0)
                            {
                                var ctdt = new ChuongTrinhDaoTaoChiTiet()
                                {
                                    ID_mon = (int)lueMonHoc.EditValue,
                                    ID_dt = id_dts1,
                                    Ky_thu = int.Parse(txtKyHoc.Text),
                                    So_hoc_trinh = int.Parse(txtSoHocTrinh.Text),
                                    Ly_thuyet = int.Parse(txtLyThuyet.Text),
                                    Thuc_hanh = int.Parse(txtThucHanh.Text),
                                    He_so = int.Parse(txtHeSo.Text)
                                };
                                db.ChuongTrinhDaoTaoChiTiets.InsertOnSubmit(ctdt);
                                db.SubmitChanges();
                                var id_dts = db.ChuongTrinhDaoTaos.Where(a => a.ID_he == (int)lueHe.EditValue && a.ID_khoa == (int)lueKhoa.EditValue && a.ID_chuyen_nganh == (int)lueChuyenNganh.EditValue && a.Khoa_hoc == int.Parse(lueKhoaHoc.Text)).Select(a => a.ID_dt).FirstOrDefault();
                                var daotao = db.ChuongTrinhDaoTaoChiTiets.Where(a => a.ID_dt == id_dts).ToList();
                                gridControl2.DataSource = daotao.ToList();
                                gridView2.BestFitAllColumns();
                                btnthuchien.Enabled = btnhuy.Enabled = false;
                                btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = true;
                                lueMonHoc.Enabled = txtHeSo.Enabled = txtKyHoc.Enabled = txtLyThuyet.Enabled = txtSoHocTrinh.Enabled = txtThucHanh.Enabled = false;
                                //   C_KyThu.LoadDataSource(lueKyThu);
                                MessageBox.Show("Thêm dữ liệu thành công", "Thông báo");
                            }
                            else
                            {
                                MessageBox.Show("Lỗi");

                            }

                        }


                        catch (Exception)
                        {
                            MessageBox.Show("Lỗi");
                        }
                    }
                }
                else if (abc == 2)
                {
                    var rs = MessageBox.Show("Bạn có muốn sửa dữ liệu không", "Chú ý", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
                    if (rs == System.Windows.Forms.DialogResult.Yes)
                    {
                        try
                        {

                            var ctdt = gridView2.GetFocusedRow() as ChuongTrinhDaoTaoChiTiet;
                            ctdt.ID_mon = (int)lueMonHoc.EditValue;
                            ctdt.Ky_thu = int.Parse(txtKyHoc.Text);
                            ctdt.Ly_thuyet = int.Parse(txtLyThuyet.Text);
                            ctdt.So_hoc_trinh = int.Parse(txtSoHocTrinh.Text);
                            ctdt.Thuc_hanh = int.Parse(txtThucHanh.Text);
                            ctdt.He_so = int.Parse(txtHeSo.Text);
                            var update = db.ChuongTrinhDaoTaoChiTiets.SingleOrDefault(a => a.ID_dt_mon == ctdt.ID_dt_mon);
                            update.ID_mon = ctdt.ID_mon;
                            update.Ky_thu = ctdt.Ky_thu;
                            update.Ly_thuyet = ctdt.Ly_thuyet;
                            update.So_hoc_trinh = ctdt.So_hoc_trinh;
                            update.Thuc_hanh = ctdt.Thuc_hanh;
                            update.He_so = ctdt.He_so;
                            db.SubmitChanges();
                            var id_dts = db.ChuongTrinhDaoTaos.Where(a => a.ID_he == (int)lueHe.EditValue && a.ID_khoa == (int)lueKhoa.EditValue && a.ID_chuyen_nganh == (int)lueChuyenNganh.EditValue && a.Khoa_hoc == int.Parse(lueKhoaHoc.Text)).Select(a => a.ID_dt).FirstOrDefault();
                            var daotao = db.ChuongTrinhDaoTaoChiTiets.Where(a => a.ID_dt == id_dts).ToList();
                            gridControl2.DataSource = daotao.ToList();
                            lueMonHoc.Enabled = txtHeSo.Enabled = txtKyHoc.Enabled = txtLyThuyet.Enabled = txtSoHocTrinh.Enabled = txtThucHanh.Enabled = false;
                            btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = true;
                            gridView2.BestFitAllColumns();
                            btnthuchien.Enabled = btnhuy.Enabled = false;
                            MessageBox.Show("Sửa dữ liệu thành công", "Thông báo");
                        }
                        catch (Exception)
                        {
                            MessageBox.Show("Lỗi");
                        }
                    }
 
                }
            }
        }

        private void btnsua_Click(object sender, EventArgs e)
        {
            btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = false;
            lueMonHoc.Enabled = txtHeSo.Enabled = txtKyHoc.Enabled = txtLyThuyet.Enabled = txtSoHocTrinh.Enabled = txtThucHanh.Enabled = true;
            btnthuchien.Enabled = btnhuy.Enabled = true;
            abc = 2;
            
        }

        private void btnxoa_Click(object sender, EventArgs e)
        {
            if (gridView2.FocusedRowHandle < 0) return;
            var rs = MessageBox.Show("Bạn có muốn xóa dữ liệu không", "Chú ý", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
            if (rs == System.Windows.Forms.DialogResult.Yes)
            {
                try
                {
                    Context db = new Context();
                    var lop = gridView2.GetFocusedRow() as ChuongTrinhDaoTaoChiTiet;
                    var delete = db.ChuongTrinhDaoTaoChiTiets.SingleOrDefault(a => a.ID_dt_mon == lop.ID_dt_mon);
                    db.ChuongTrinhDaoTaoChiTiets.DeleteOnSubmit(delete);
                    db.SubmitChanges();
                    var id_dts = db.ChuongTrinhDaoTaos.Where(a => a.ID_he == (int)lueHe.EditValue && a.ID_khoa == (int)lueKhoa.EditValue && a.ID_chuyen_nganh == (int)lueChuyenNganh.EditValue && a.Khoa_hoc == int.Parse(lueKhoaHoc.Text)).Select(a => a.ID_dt).FirstOrDefault();
                    var daotao = db.ChuongTrinhDaoTaoChiTiets.Where(a => a.ID_dt == id_dts).ToList();
                    gridControl2.DataSource = daotao.ToList();
                    gridView2.BestFitAllColumns();
                    MessageBox.Show("Xóa dữ liệu thành công", "Thông báo");
                }
                catch (Exception)
                {
                    MessageBox.Show("Lỗi");
                }
            }
        }

        private void txtKyHoc_Validating(object sender, CancelEventArgs e)
        {
            //if (string.IsNullOrEmpty(txtKyHoc.Text))
            //{
            //    MessageBox.Show("Chưa nhập dữ liệu kỳ học");
            //    txtKyHoc.SetFocus();
            //}
        }

        private void txtSoHocTrinh_Validating(object sender, CancelEventArgs e)
        {
            //if (string.IsNullOrEmpty(txtSoHocTrinh.Text))
            //{
            //    MessageBox.Show("Chưa nhập dữ liệu số học trình");
            //    txtSoHocTrinh.SetFocus();
            //}
        }

        private void txtLyThuyet_Validating(object sender, CancelEventArgs e)
        {
            //if (string.IsNullOrEmpty(txtLyThuyet.Text))
            //{
            //    MessageBox.Show("Chưa nhập dữ liệu lý thuyết");
            //    txtLyThuyet.SetFocus();
            //}
        }

        private void txtThucHanh_Validating(object sender, CancelEventArgs e)
        {
            //if (string.IsNullOrEmpty(txtThucHanh.Text))
            //{
            //    MessageBox.Show("Chưa nhập dữ liệu thực hành");
            //    txtThucHanh.SetFocus();
            //}
        }

        private void txtHeSo_Validating(object sender, CancelEventArgs e)
        {
            //if (string.IsNullOrEmpty(txtHeSo.Text))
            //{
            //    MessageBox.Show("Chưa nhập dữ liệu hệ số");
            //    txtHeSo.SetFocus();
            //}
        }

        private void btnthoat_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void panel1_Paint(object sender, PaintEventArgs e)
        {

        }

        private void btnhuy_Click(object sender, EventArgs e)
        {
            var Monhocs = gridView2.GetFocusedRow() as ChuongTrinhDaoTaoChiTiet;
            if (Monhocs == null) return;
            Context db = new Context();

            lueMonHoc.EditValue = Monhocs.ID_mon;
            txtSoHocTrinh.Text = Monhocs.So_hoc_trinh.ToString();
            txtThucHanh.Text = Monhocs.Thuc_hanh.ToString();
            txtLyThuyet.Text = Monhocs.Ly_thuyet.ToString();
            txtHeSo.Text = Monhocs.He_so.ToString();
            txtKyHoc.Text = Monhocs.Ky_thu.ToString();
            btnthem.Enabled = btnsua.Enabled = btnxoa.Enabled = true;
            lueMonHoc.Enabled = txtHeSo.Enabled = txtKyHoc.Enabled = txtLyThuyet.Enabled = txtSoHocTrinh.Enabled = txtThucHanh.Enabled = false;
            btnthuchien.Enabled = btnhuy.Enabled = false;
        }

        

        
    }
}